package com.rx.core.handler;

import com.rx.core.base.RxBaseData;
import com.rx.core.enm.HANDLER_TYPE;

import java.util.List;

/**
 * 所有版权归 广西梧州 陈锦韬 所有
 *
 * @version V1.0
 * @Title: RxHandlerWraper
 * @Package com.rx.core.handler
 * @Description: 处理器包装
 * @author: 陈锦韬
 * @date: 2021\6\11 0011
 * @Copyright: 2021 陈锦韬  All rights reserved.
 */
public interface RxHandlerWraper {
    /**
     * 处理器逻辑实现
     * @param data
     * @return
     */
    boolean handle(RxBaseData data);

    /**
     * 根据URL设置处理器优先级
     * @param key
     * @return
     */
    int order(String key);
    void order(String key,int order);
    void removeOrder(String key);
//    void temporaryOrder(String key,Integer order);
//    int temporaryOrder();

    /**
     * 设置当前处理器适合哪种模式及url
     * @param newType
     * @param keys
     */
    void setHandlerType(HANDLER_TYPE newType,String[] keys);
    void setHandlerType(HANDLER_TYPE newType,String key);
    void removeHandlerType(HANDLER_TYPE newType,String key);
    List<HANDLER_TYPE> handlerTypes();

    /**
     * 根据处理模式获取URL。
     * @param keyType
     * @return
     */
    List<String> handlerType(HANDLER_TYPE keyType);

    /**
     * 获取处理器名称
     * @return
     */
    String getHandleName();
}
